<template>
  <div class="search">
    <!-- trigger-on-focus：聚焦的时候是否触发，默认为true -->
    <!-- select：点击选中建议项时触发 -->
    <el-autocomplete
      clearable
      placeholder="请输入医院名称"
      class="form"
      v-model="hosname"
      :fetch-suggestions="fetchData"
      :trigger-on-focus="false"
      @select="goDetail"
    />
    <el-button
      type="primary"
      size="default"
      :icon="Search"
    >搜索</el-button>
  </div>
</template>

<script setup lang="ts">
// 引入element-plush提供的图标
import { Search } from '@element-plus/icons-vue'
import { ref } from 'vue'
// 引入请求方法
import { reqHospitalInfo } from '@/api/home';
import type { HospitalInfo } from '@/api/home/type'
import { useRouter } from 'vue-router';
// 创建路由器对象
let $router = useRouter();
// 收集搜索的关键字：医院的名字
let hosname = ref<string>('');
// 顶部组件的回调
const fetchData = async (keyword: string, cb: any) => {
  // 当用户输入完关键字函数会执行一次，发起请求获取需要展示的数据
  let result: HospitalInfo = await reqHospitalInfo(keyword);
  // 整理数据，变成组件需要的数据
  let showData = result.data.map(item => {
    return {
      value: item.hosname,  // 展示的医院的名字
      hoscode: item.hoscode, // 存储医院的编码  
    }
  })
  // 给组件提供展示的数据
  cb(showData)
}
// 点击某一个推荐项
const goDetail = (item: any) => {
  // 点击推荐项进入到医院的详情页，将来需要携带query参数（医院的编码）
  // $router.push({ path: '/hospital/register' })
  $router.push({ name: 'Register', query: { hoscode: item.hoscode } })
}
</script>

<script lang="ts">
export default {
  name: 'Search'
}
</script>

<!-- 
  深度选择器：
    1.原生的css深度选择器：>>>
    2.less深度选择器：/deep/
    3.sass深度选择器：::v-deep

 -->
<style scoped lang="scss">
.search {
  margin: 10px 0;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 50px;

  // 开启深度监视
  ::v-deep(.el-input__wrapper) {
    margin-right: 10px;
    width: 600px;
  }
}
</style>